﻿Option Strict On
Option Explicit On
Option Infer On

Imports System
Imports System.Collections.Generic
Imports GenDotNet.Model.Common

Public Interface IPropertyData
   Inherits IBaseData

   ReadOnly Property ObjectData() As IObjectData
   ReadOnly Property Name() As String
   ReadOnly Property OriginalName() As String
   ReadOnly Property IsPrimaryKey() As Boolean
   ReadOnly Property IsAutoincrement() As Boolean
   ReadOnly Property NetType() As StandardNetType
   ReadOnly Property TableName() As String
   ReadOnly Property Caption() As String
   ReadOnly Property AllowNulls() As Boolean
   ReadOnly Property SqlType() As String
   ReadOnly Property IsReadOnly() As Boolean
   ReadOnly Property MaxLength() As Int32
   ReadOnly Property IsLocalizedProperty() As Boolean
   ReadOnly Property UseForDesc() As Boolean
   ReadOnly Property DefaultValue() As String
   ReadOnly Property Privileges() As list(Of IPropertyPrivilegeData)
End Interface

'<xs:sequence>
'  <xs:element name="PropertyPrivileges" />
'</xs:sequence>
'<xs:attribute name="Name" type="xs:string" use="required" />
'<xs:attribute name="ColumnName" type="xs:string" use="required" />
'<xs:attribute name="TableName" type="xs:string" use="required" />
'<xs:attribute name="NETType" type="xs:string" use="required" />
'<xs:attribute name="Caption" type="xs:string" use="required" />
'<xs:attribute name="ShortNETType" type="xs:string" use="required" />
'<xs:attribute name="VBTypeAlias" type="xs:string" use="required" />
'<xs:attribute name="CSharpType" type="xs:string" use="required" />
'<xs:attribute name="VBNETType" type="xs:string" use="required" />
'<xs:attribute name="AllowNulls" type="xs:boolean" use="required" />
'<xs:attribute name="BaseNETType" type="xs:string" use="required" />
'<xs:attribute name="Empty" type="xs:string" use="required" />
'<xs:attribute name="IsAutoIncrement" type="xs:boolean" use="required" />
'<xs:attribute name="IsComputed" type="xs:boolean" use="required" />
'<xs:attribute name="IsPrimaryKey" type="xs:boolean" use="required" />
'<xs:attribute name="ReadOnly" type="xs:boolean" use="required" />
'<xs:attribute name="Ordinal" type="xs:unsignedByte" use="required" />
'<xs:attribute name="OriginalName" type="xs:string" use="required" />
'<xs:attribute name="SQLType" type="xs:string" use="required" />
'<xs:attribute name="Unique" type="xs:boolean" use="required" />
'<xs:attribute name="UseForDesc" type="xs:boolean" use="required" />
'<xs:attribute name="ForeignKeyCount" type="xs:unsignedByte" use="required" />
'<xs:attribute name="Default" type="xs:string" use="required" />
'<xs:attribute name="DefaultVB" type="xs:string" use="required" />
'<xs:attribute name="DefaultCSharp" type="xs:string" use="required" />
'<xs:attribute name="CasedName" type="xs:string" use="required" />
'<xs:attribute name="MaxLength" type="xs:unsignedShort" use="optional" />
'<xs:attribute name="MS_Description" type="xs:string" use="optional" />
'<xs:attribute name="IsLocalizedProperty" type="xs:boolean" use="optional" />
'<xs:attribute name="test5" type="xs:string" use="optional" />
'<xs:attribute name="test6" type="xs:string" use="optional" />
'<xs:attribute name="test7" type="xs:string" use="optional" />
